package com.generic.array.demo3;

import java.lang.reflect.Array;

/**
 * 成功创建一个泛型数组的唯一方式，就是创建一个被擦除类型的新数组，然后对其转型
 * 
 * @author Administrator
 * 
 * @param <T>
 */
public class GenericArray<T> {

	private T[] array;

	// 传递一个标记类型，以便从擦除中被恢复
	public GenericArray(Class<T> type, int sz) {
		array = (T[]) Array.newInstance(type, sz);
	}

	public void put(int index, T item) {
		array[index] = item;
	}

	public T get(int index) {
		return array[index];
	}

	public T[] rep() {
		return array;
	}

	public static void main(String[] args) {
		GenericArray<Integer> gai = new GenericArray<Integer>(Integer.class, 10);
		Integer[] oai = gai.rep();// 类型转换错误，因为实际运行的是Object[]
		Object[] oa = gai.rep();
	}

}
